perm filename M[AP,SYS]2 blob sn#010731 filedate 1972-11-10 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00005 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	Start of program: main loop.
C00003 00003	Start of program: main loop.
C00005 00004	Subroutines: TOTS.
C00008 00005	Subroutines: NXTDG.
C00009 ENDMK
C⊗;
;Start of program: main loop.

	TITLE	M

↓CHAR←2
↓AC1 ←3
↓BOT ←4
↓CNT ←5
↓QUO ←6
↓REM ←7
↓DX  ←10
↓BOT ←11
↓BP  ←12
↓P   ←17

↓CR←15	↓LF←12

PDLEN←30
↓NPNS←100

PDLIST:	BLOCK	PDLEN
NAME:	BLOCK	NPNS*2
COUNT←NAME+1

BLANKS:	ASCII	/     /
DIGITS:	BLOCK	4

USERSF:	SIXBIT	/USERS/
	BLOCK	3
IBUF:	BLOCK	3

UCMD:	IOWD	2,NAME+2
	0

DEFINE CHKANS {
	INCHRW	CHAR
	CAIE	CHAR,"Y"
	CAIN	CHAR,"y"}
;Start of program: main loop.

FAILED:	OUTSTR	[ASCIZ /	FAILED!
/]

M:	CALLI
	MOVE	P,[IOWD PDLEN,PDLIST]

	OUTSTR	[ASCIZ /

START UP [-AP-]? /]
	CHKANS
	JRST	[MOVEI	AC1,[SIXBIT /[-AP-]/
			     SIXBIT / APSYS/
			     0]		;wake up now
		 CALLI	AC1,400061	;WAKEME
		 JRST	FAILED
		 JRST	DONE]

	OUTSTR	[ASCIZ /
PREVENT [-AP-] FROM STARTING UP? /]
	CHKANS
	JRST	[MOVEI	AC1,[SIXBIT /[-AP-]/
			     SIXBIT / APSYS/
			     -1]	;wake up never
		 CALLI	AC1,400061	;WAKEME
		 JRST	FAILED
		 JRST	DONE]

	OUTSTR	[ASCIZ /
USER TOTALS? /]
	CHKANS
	JRST	TOTS

	OUTSTR	[ASCIZ /
THAT'S ALL FOLKS.
/]
	JRST	M
DONE:	OUTSTR	[ASCIZ /	DONE

/]
	CALLI	1,12			;EXIT
	JRST	M
;Subroutines: TOTS.

	BEGIN	TOTS
↑TOTS:	OUTSTR	[ASCIZ/

/]
	MOVEI	BOT,2
	SETZM	COUNT
	SETZM	NAME
	INIT	0,10
	SIXBIT	/DSK/
	IBUF
	HALT	.
	SETZM	USERSF+3
	LOOKUP	0,USERSF
	JRST	FAILED
GETNAM:	SOSG	IBUF+2
	IN	0,
	JRST	[ILDB AC1,IBUF+1	;GET PN
		 ILDB CNT,IBUF+1	;GET COUNT FIELD FOR THIS PN
		 SOS  IBUF+2
		 JUMPN AC1,FIND
		 JRST GETNAM]
	STATO	0,20000	
	HALT	.
	RELEAS	0,
EOF:	MOVNI	AC1,-2(BOT)
	HRLM	AC1,UCMD
	CAILE	BOT,2
	JRST	NNN
	OUTSTR	[ASCIZ /
NO USERS YET.
/]
	JRST	DONE

FIND:
	MOVE	DX,BOT
NEXT:	SUBI	DX,2
	CAME	AC1,NAME(DX)
	JUMPG	DX,NEXT
	JUMPN	CNT,.+2			;IS THE COUNT FIELD ZERO?
	MOVEI	CNT,1			;YES. IMPLICIT COUNT OF 1.
	ADDM	CNT,COUNT		;ADD TO TOTAL COUNT OF PNs
	JUMPLE	DX,INSERT
	ADDM	CNT,COUNT(DX)
	JRST	GETNAM
INSERT:	CAIL	BOT,2*NPNS
	JRST	[OUTSTR [ASCIZ / TOO MANY PNS.  /]
		 JRST	FAILED]
	MOVEM	AC1,NAME(BOT)
	MOVEM	CNT,COUNT(BOT)
	ADDI	BOT,2
	JRST	GETNAM

PRNTNX:	OUTSTR	NAME(BOT)
	MOVE	BP,[POINT 7,DIGITS]
	MOVE	QUO,COUNT(BOT)
	PUSHJ	P,NXTDG
	MOVEI	QUO,CR
	IDPB	QUO,BP
	MOVEI	QUO,LF
	IDPB	QUO,BP
	MOVEI	QUO,0
	IDPB	QUO,BP
	OUTSTR	BLANKS
NNN:	SUBI	BOT,2
	JUMPGE	BOT,PRNTNX
	INIT	0,17
	SIXBIT	/DSK/
	0
	HALT	.	
	SETZM	USERSF+1
	SETZM	USERSF+2
	SETZM	USERSF+3
	ENTER	0,USERSF
	JRST	[OUTSTR [ASCIZ /
No new file written.
/]
		 JRST FIN]
	OUT	0,UCMD
	JRST	FIN
	RELEAS	0,3
	OUTSTR	[ASCIZ /
OUT UUO failed for new file.
/]
	JRST	DONE
FIN:	RELEAS	0,
	JRST	DONE
	BEND
;Subroutines: NXTDG.

NXTDG:	IDIVI	QUO,=10
	PUSH	P,REM
	SKIPE	QUO
	PUSHJ	P,NXTDG
	POP	P,QUO
	ADDI	QUO,60
	IDPB	QUO,BP
	POPJ	P,

	END	M